/* [5,2,[2,4,5,[9,3,1],5]]
实现：实现解构多维数组 */

var arr = [5,2,[2,4,5,[9,3,1]],5];
// 闭包
function arrDeepToSingle(arr){
	var tempArr = [];
	function _d2s(arr){
		for(var i = 0; i<arr.length; i++){
			//判断是不是数组
			if(Object.prototype.toString.call(arr[i]) === '[object Array]'){
				_d2s(arr[i]);
			}else{
				tempArr.push(arr[i]);
			}
		}
	}
	_d2s(arr);
	return  tempArr;
}

// var res = arrDeepToSingle(arr);
// console.log(res);
function*itemArr(arr){
	for(var i = 0; i<arr.length; i++){
		//判断是不是数组
		if(Object.prototype.toString.call(arr[i]) === '[object Array]'){
			yield* itemArr(arr[i]);//值的执行权交出去 ，交给可遍历的迭代器，或者生成器
		}else{
			yield arr[i];
		}
	}
}

var getArr = itemArr(arr);
var resArr = [...getArr];//解构执行gen所有
